const {
  mysqlFun
} = require('../mysql/mysql');
exports.novel = function (app) {
  // 存储数据
  app.post("/setNovel", (req, res) => {
    let sql = `SELECT * FROM novel WHERE id=${req.body.id}`;
    // 发送到数据库
    function obj(data) {
      // 通过长度判断是否有返回数据
      if (data === undefined) {
        return;
      }
      if (data.length !== 0) {
        // 用户有数据
        // 拿到用户现存的数据写入新的数据再存到数据库
        let Novel = JSON.parse(data[0].novellist);
        // 循环所有的数据判断是否存在
        for (let index = 0; index < Novel.length; index++) {
          if (Novel[index].novelText === req.body.Novel.novelText) {
            // 电子书已存在的返回数据
            res.json({
              code: 'N0002'
            })
            return;
          }
        }
        // 仓库中没有这本书就写入数据
        Novel.push(req.body.Novel)
        // 有数据返回  结果
        let sql = `UPDATE novel SET novellist='${JSON.stringify(Novel)}' WHERE id=${req.body.id}`;
        // 发送到数据库
        function obj(data) {
          // 通过长度判断是否有返回数据
          if (data === undefined) {
            return;
          }
          if (data.length !== 0) {
            res.json({
              code: 'N0001'
            })
          }
        }
        mysqlFun(sql, obj);
      } else {
        // 没有数据返回
        // 电子书的设置
        let novelset = {
          // 字体大小
          size: 22,
          // 背景颜色
          back: "#c5b49a"
        };
        let Novel = JSON.stringify(req.body.Novel);
        let sql = `INSERT INTO novel(id,novellist,novelset) value (${req.body.id},'[${Novel}]','${JSON.stringify(novelset)}')`;
        // 发送到数据库
        function obj(data) {
          // 通过长度判断是否有返回数据
          if (data === undefined) {
            return;
          }
          if (data.length !== 0) {
            // 当用户没有数据时写入
            res.json({
              code: 'N0001'
            })
          }
        }
        mysqlFun(sql, obj);
      }
    }
    mysqlFun(sql, obj);
  })

  // 获取电子书
  app.post("/getBookshelfAll", (req, res) => {
    let sql = `SELECT * FROM novel WHERE id=${req.body.id}`;

    function obj(data) {
      // 通过长度判断是否有返回数据
      if (data === undefined) {
        return;
      }
      if (data.length !== 0) {
        // 用户已有账号就返回用户账号中的数据
        let Novel = JSON.parse(data[0].novellist);
        res.json({
          code: 'N0003',
          data: Novel
        })
      } else {
        // 用户第一次进入书架没有创建书就返回一个空对象
        res.json({
          code: 'N0003',
          data: []
        })
      }
    }
    mysqlFun(sql, obj);
  })

  // 删除某本电子书
  app.post("/deleteNovelId", (req, res) => {
    let sql = `SELECT * FROM novel WHERE id=${req.body.id}`;

    function obj(data) {
      // 通过长度判断是否有返回数据
      if (data === undefined) {
        return;
      }
      if (data.length !== 0) {
        // 用户已有账号就返回用户账号中的数据
        let Novel = JSON.parse(data[0].novellist);
        // 用for循环找到要删除的某本书
        for (let index = 0; index < Novel.length; index++) {
          if (Novel[index].id === req.body.novelId) {
            // 删除
            Novel.splice(index, 1);
            // 把删除好的数据重新写入
            let sql = `UPDATE novel SET novellist='${JSON.stringify(Novel)}' WHERE id=${req.body.id}`;

            function obj(data) {
              // 通过长度判断是否有返回数据
              if (data === undefined) {
                return;
              }
              if (data.length !== 0) {
                res.json({
                  code: 'D0001'
                })
              }
            }
            mysqlFun(sql, obj);
          }
        }
      }
    }
    mysqlFun(sql, obj);
  })

  // 获取设置信息
  app.post("/getReaderSetUp", (req, res) => {
    let sql = `SELECT * FROM novel WHERE id=${req.body.id}`;

    function obj(data) {
      // 通过长度判断是否有返回数据
      if (data === undefined) {
        return;
      }
      if (data.length !== 0) {
        // 用户已有账号就返回用户账号中的数据
        let NovelSet = JSON.parse(data[0].novelset);
        let BookMark = [];
        // 返回用户账号的书签
        let novellist = JSON.parse(data[0].novellist);
        // 通过书的id找到书对应的书签
        for (let index = 0; index < novellist.length; index++) {
          if (novellist[index].id === req.body.novelid) {
            BookMark = novellist[index].bookmark;
          }
        }
        res.json({
          code: 'G0001',
          data: NovelSet,
          BookMark
        })
      }
    }
    mysqlFun(sql, obj);
  })

  // 添加书签
  app.post("/addBookmark", (req, res) => {
    let sql = `SELECT * FROM novel WHERE id=${req.body.id}`;

    function obj(data) {
      // 通过长度判断是否有返回数据
      if (data === undefined) {
        return;
      }
      if (data.length !== 0) {
        let BookMark = [];
        // 返回用户账号的书签
        let novellist = JSON.parse(data[0].novellist);
        // 通过书的id找到书对应的书签
        for (let index = 0; index < novellist.length; index++) {
          if (novellist[index].id === req.body.novelid) {
            // 所有书签
            BookMark = novellist[index].bookmark;
            // 把书签写入
            BookMark.push(req.body.bookMarkObj);
            novellist[index].bookmark = BookMark;
          }
        }
        // 把改好的数据写入数据库
        let sql = `UPDATE novel SET novellist='${JSON.stringify(novellist)}' WHERE id=${req.body.id}`;

        function obj(data) {
          // 通过长度判断是否有返回数据
          if (data === undefined) {
            return;
          }
          if (data.length !== 0) {
            res.json({
              code: 'D0001'
            })
          }
        }
        mysqlFun(sql, obj);
      }
    }
    mysqlFun(sql, obj);
  })

  // 查看书签
  app.post("/getBookmarkAll", (req, res) => {
    let sql = `SELECT * FROM novel WHERE id=${req.body.id}`;

    function obj(data) {
      // 通过长度判断是否有返回数据
      if (data === undefined) {
        return;
      }
      if (data.length !== 0) {
        let BookMark = [];
        // 返回用户账号的书签
        let novellist = JSON.parse(data[0].novellist);
        // 通过书的id找到书对应的书签
        for (let index = 0; index < novellist.length; index++) {
          if (novellist[index].id === req.body.novelid) {
            // 所有书签
            BookMark = novellist[index].bookmark;
          }
        }
        res.json({
          code: 'G0001',
          BookMark
        })
      }
    }
    mysqlFun(sql, obj);
  })

  // 同步章节内容
  app.post("/synchronizationNovel", (req, res) => {
    let sql = `SELECT * FROM novel WHERE id=${req.body.id}`;

    function obj(data) {
      // 通过长度判断是否有返回数据
      if (data === undefined) {
        return;
      }
      if (data.length !== 0) {
        let BookMark = [];
        // 返回用户账号的书签
        let novellist = JSON.parse(data[0].novellist);
        // 通过书的id找到书
        for (let index = 0; index < novellist.length; index++) {
          if (novellist[index].id === req.body.novelid) {
            // 改变章节
            novellist[index].novelUrl = req.body.novelUrl
            // 改变index
            novellist[index].index = req.body.index
          }
        }
        // 把改好的数据写入数据库
        let sql = `UPDATE novel SET novellist='${JSON.stringify(novellist)}' WHERE id=${req.body.id}`;

        function obj(data) {
          // 通过长度判断是否有返回数据
          if (data === undefined) {
            return;
          }
          if (data.length !== 0) {
            res.json({
              code: 'S0001'
            })
          }
        }
        mysqlFun(sql, obj);
      }
    }
    mysqlFun(sql, obj);
  })


  // 同步章节内容
  app.post("/setBackSize", (req, res) => {
    let sql = `UPDATE novel SET novelset='${JSON.stringify(req.body.novelset)}' WHERE id=${req.body.id}`;

    function obj(data) {
      // 通过长度判断是否有返回数据
      if (data === undefined) {
        return;
      }
      if (data.length !== 0) {
        res.json({
          code: 'A0001'
        })
      }
    }
    mysqlFun(sql, obj);
  })
}